/**************************************************************************
 * graph.h
 *
 * CECS619 Project 3
 *
 * Authors: Max Stoler, Jason Hatton
 * 
 *************************************************************************/

#ifndef GRAPH_H
#define GRAPH_H

typedef struct GRAPH_T
{
	int size;
	int *graph;

	char **vertexNames; /*Immutable*/
} Graph;

Graph *GraphLoad(const char*fileName);
void GraphDelete(Graph *g);
Graph *GraphCopy(Graph *g);
int GraphGetAdj(Graph *g, int p, int q);
void GraphSetAdj(Graph *g, int p, int q, int val);
#define GraphAdj(G,p,q) (G->graph[p*G->size + q])
void GraphPrint(Graph *g);
void GraphPrintNames(Graph *g);

#endif


